/*
 * FileThread.java
 *
 * Created on 29 de diciembre de 2006, 12:03 PM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package com.src.computec.radar.consultas.thread;
import com.src.computec.radar.base.dao.GenericDAO;
import com.src.computec.radar.base.dao.exception.DAOException;
import com.src.computec.radar.consultas.base.constantes.ConstantesGenerales;
import com.src.computec.radar.consultas.generarbase.dto.BaseDto;
import com.src.computec.radar.consultas.ordenproceso.dao.BaseOrdenProcesoDAO;
import com.src.computec.radar.consultas.ordenproceso.dao.OrdenProcesoDAO;
import com.src.computec.radar.consultas.ordenproceso.dto.BusquedaDto;
import com.src.computec.radar.consultas.ordenproceso.factory.QueryFactory;
import com.src.computec.radar.consultas.ordenproceso.factory.exception.QueryFactoryException;
import com.src.computec.radar.consultas.ordenproceso.utilidades.CreateZipFile;
import com.src.computec.radar.services.utilities.dto.EnvioDto;
import com.src.computec.radar.services.utilities.dto.InsertoDto;
import com.src.log4j.logger.custom.XLogger;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

/**
 *
 * @author aocampo
 */
public class FileThread extends GenericDAO implements Runnable {
    
    private static XLogger xLogger;
    public static final int FILE_ENVIOS = 1;
    public static final int FILE_ENVIOS_ORDENES_PROCESO = 2;
    public static final int FILE_BASE = 3;
    public static final int FILE_RAD = 4;
    private int i;
    private String fileName;
    private List listObjects;
    private boolean conInsertos;
    private boolean conTipoDestinoCliente;
    private BusquedaDto busquedaDto;
    private String codigoProveedorFilter;
    private String codigoNodoFilter;
    private String ldapUser;
    
    /** Creates a new instance of FileThread */
    public FileThread(int i, String fileName, List listObjects) {
        this.xLogger = (XLogger) XLogger.getLogger(this.getClass().getName());
        this.i = i;
        this.fileName = fileName;
        this.listObjects = listObjects;
    }
    
    public FileThread(int i, String fileName, List listObjects, boolean conInsertos, boolean conTipoDestinoCliente) {
        this.xLogger = (XLogger) XLogger.getLogger(this.getClass().getName());
        this.i = i;
        this.fileName = fileName;
        this.listObjects = listObjects;
        this.conInsertos = conInsertos;
        this.conTipoDestinoCliente = conTipoDestinoCliente;
    }
    
    public FileThread(int i, String fileName, BusquedaDto busquedaDto, String codigoProveedorFilter, String codigoNodoFilter, String ldapUser) {
        this.xLogger = (XLogger) XLogger.getLogger(this.getClass().getName());
        this.i = i;
        this.fileName = fileName;
        this.busquedaDto = busquedaDto;
        this.codigoProveedorFilter = codigoProveedorFilter;
        this.codigoNodoFilter = codigoNodoFilter;
        this.ldapUser = ldapUser;
    }
    
    public void run() {
        switch (i) {
            case FILE_ENVIOS: {
                this.createNewFileEnvios();
                break;
            }
            case FILE_ENVIOS_ORDENES_PROCESO: {
                this.createNewFileEnviosOrdenesProceso();
                break;
            }
            case FILE_BASE: {
                this.createNewFileBase();
                break;
            }
            case FILE_RAD: {
                this.createNewFileRad();
                break;
            }
        }
    }
    
    private void createNewFileEnvios() {
        if (listObjects != null && !listObjects.isEmpty()) {
            File file = null;
            FileWriter fileWriter = null;
            try {
                file = new File(ConstantesGenerales.FOLDER_CARGUE_ARCHIVOS + ConstantesGenerales.PATH_ARCHIVOS_ALERTAS + fileName);
                fileWriter = new FileWriter(file);
                fileWriter.write("CODIGO_BARRAS" + ConstantesGenerales.FILE_SEPARATOR + "CODIGO_INTERNO_CLIENTE" + ConstantesGenerales.FILE_SEPARATOR + "NUMERO_IDENTIFICACION" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR +
                                 "DIRECCION_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR + "TELEFONO_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR + "BARRIO_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR + "TIENE_IMAGEN" + ConstantesGenerales.FILE_SEPARATOR +
                                 "FECHA_PROCESO" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_GESTION" + ConstantesGenerales.FILE_SEPARATOR + "FECHA_ULTIMA_GESTION" + ConstantesGenerales.FILE_SEPARATOR + "RAZON_SOCIAL_PROVEEDOR" + ConstantesGenerales.FILE_SEPARATOR +
                                 "NOMBRE_NODO" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_DEPARTAMENTO" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_MUNICIPIO" + ConstantesGenerales.FILE_SEPARATOR + "DESCRIPCION_PRODUCTO" + ConstantesGenerales.FILE_SEPARATOR + "NUMERO_ORDEN" + 
                                 ConstantesGenerales.FILE_SEPARATOR + "PROBABILIDAD_ENTREGA\r\n");
                Iterator iterator = listObjects.iterator();
                while (iterator.hasNext()) {
                    EnvioDto envioDto = (EnvioDto) iterator.next();
                    fileWriter.write(envioDto.getCodigoBarras() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getCodigoInternoCliente() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getNumeroIdentificacion() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getNombreDestinatario() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getDireccionDestinatario() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getTelefonoDestinatario() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getBarrioDestinatario() + ConstantesGenerales.FILE_SEPARATOR);
                    if (envioDto.getPathImagen() != null && !envioDto.getPathImagen().equals("")) {
                        fileWriter.write("SI" + ConstantesGenerales.FILE_SEPARATOR);
                    }
                    else {
                        fileWriter.write("NO" + ConstantesGenerales.FILE_SEPARATOR);
                    }
                    fileWriter.write(envioDto.getFechaProceso() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getNombreGestion() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getFechaUltimaGestionFormat() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getRazonSocialProveedor() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getNombreNodo() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getNombreDepartamento() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getNombreMunicipio() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getDescripcionProducto() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getNumeroOrden() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(Integer.toString(envioDto.getProbabilidadEntrega()) + "\r\n");
                }
                fileWriter.write("\r\nNRO. REGISTROS: " + listObjects.size() + "\r\n");
                fileWriter.write("FECHA GENERACION: " + ConstantesGenerales.SIMPLE_DATE_FORMAT.format(new Date()));
            }
            catch (IOException e) {
                xLogger.error("FileThread:createNewFileEnvios:", e);
            }
            finally {
                try {
                    if (fileWriter != null) {
                        fileWriter.close();
                    }
                }
                catch (IOException e) {
                    xLogger.error("FileThread:createNewFileEnvios:fileWriterClose:", e);
                }
            }
        }
    }
    
    // <editor-fold defaultstate="collapsed" desc="method disabled: createNewFileEnviosOrdenesProceso()">
    /**
     *
     *
    private void createNewFileEnviosOrdenesProceso() {
        if (listObjects != null && !listObjects.isEmpty()) {
            File file = null;
            FileWriter fileWriter = null;
            try {
                file = new File(ConstantesGenerales.FOLDER_CARGUE_ARCHIVOS + ConstantesGenerales.PATH_ARCHIVOS_ALERTAS + fileName);
                fileWriter = new FileWriter(file);
                fileWriter.write("CODIGO_BARRAS" + ConstantesGenerales.FILE_SEPARATOR + "NUMERO_ORDEN" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_DEPARTAMENTO" + ConstantesGenerales.FILE_SEPARATOR +
                                 "NOMBRE_MUNICIPIO" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_CENTRO_POBLADO" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_GESTION" + ConstantesGenerales.FILE_SEPARATOR +
                                 "FECHA_ULTIMA_GESTION" + ConstantesGenerales.FILE_SEPARATOR + "RAZON_SOCIAL_PROVEEDOR" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_NODO" + ConstantesGenerales.FILE_SEPARATOR +
                                 "RAZON_SOCIAL_CLIENTE" + ConstantesGenerales.FILE_SEPARATOR + "DESCRIPCION_PRODUCTO" + ConstantesGenerales.FILE_SEPARATOR + "DIRECCION_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR + "FECHA PROCESO\r\n");
                Iterator iterator = listObjects.iterator();
                while (iterator.hasNext()) {
                    EnvioOrdenProcesoDto envioOrdenProcesoDto = (EnvioOrdenProcesoDto) iterator.next();
                    fileWriter.write(envioOrdenProcesoDto.getCodigoBarras() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getNumeroOrden() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getNombreDepartamento() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getNombreMunicipio() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getNombreCentroPoblado() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getNombreGestion() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getFechaUltimaGestionFormat() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getRazonSocialProveedor() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getNombreNodo() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getRazonSocialCliente() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getDescripcionProducto() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioOrdenProcesoDto.getDireccionDestinatario() + ConstantesGenerales.FILE_SEPARATOR);
		    fileWriter.write(envioOrdenProcesoDto.getFechaProcesoFormat() + "\r\n");
                }
                fileWriter.write("\r\nNRO. REGISTROS: " + listObjects.size() + "\r\n");
                fileWriter.write("FECHA GENERACION: " + ConstantesGenerales.SIMPLE_DATE_FORMAT.format(new Date()));
            }
            catch (IOException e) {
                xLogger.error("FileThread:createNewFileEnviosOrdenesProceso:", e);
            }
            finally {
                try {
                    if (fileWriter != null) {
                        fileWriter.close();
                    }
                }
                catch (IOException e) {
                    xLogger.error("FileThread:createNewFileEnviosOrdenesProceso:fileWriterClose:", e);
                }
            }
        }
    }
     */
    // </editor-fold>
    
    private void createNewFileEnviosOrdenesProceso() {
        if (busquedaDto != null) {
            BaseOrdenProcesoDAO dao = (BaseOrdenProcesoDAO) new OrdenProcesoDAO();
            File file = null;
            FileWriter fileWriter = null;
            Connection con = null;
            PreparedStatement statement = null;
            ResultSet rs = null;
            int i = 0;
            try {
                con = getConnectionDB2();
                con.setReadOnly(true);
                busquedaDto.setCodigoProveedorFilter(codigoProveedorFilter);
                busquedaDto.setCodigoNodoFilter(codigoNodoFilter);
                statement = QueryFactory.getInstance().getQuery(QueryFactory.ENVIOS_ORDENES_PROCESO_BY_NODO_AND_BUSQUEDA, con, busquedaDto);
                rs = statement.executeQuery();
                try {
                    file = new File(ConstantesGenerales.FOLDER_CARGUE_ARCHIVOS + ConstantesGenerales.PATH_ARCHIVOS_ALERTAS + fileName);
                    fileWriter = new FileWriter(file);
                    fileWriter.write("CODIGO_BARRAS" + ConstantesGenerales.FILE_SEPARATOR + "NUMERO_ORDEN" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_DEPARTAMENTO" + ConstantesGenerales.FILE_SEPARATOR +
                                     "NOMBRE_MUNICIPIO" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_CENTRO_POBLADO" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_GESTION" + ConstantesGenerales.FILE_SEPARATOR +
                                     "FECHA_ULTIMA_GESTION" + ConstantesGenerales.FILE_SEPARATOR + "RAZON_SOCIAL_PROVEEDOR" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_NODO" + ConstantesGenerales.FILE_SEPARATOR +
                                     "RAZON_SOCIAL_CLIENTE" + ConstantesGenerales.FILE_SEPARATOR + "DESCRIPCION_PRODUCTO" + ConstantesGenerales.FILE_SEPARATOR + "DIRECCION_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR + "FECHA PROCESO\r\n");
                    while (rs.next()) {
                        int indice = 0;
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(ConstantesGenerales.SHORT_SIMPLE_DATE_FORMAT_TO_HELP.format(rs.getDate(++indice)) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(rs.getString(++indice) + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(ConstantesGenerales.SHORT_SIMPLE_DATE_FORMAT_TO_HELP.format(rs.getDate(++indice)) + "\r\n");
                        i++;
                    }
                    fileWriter.write("\r\nNRO. REGISTROS: " + i + "\r\n");
                    fileWriter.write("FECHA GENERACION: " + ConstantesGenerales.SIMPLE_DATE_FORMAT.format(new Date()));
                }
                catch (IOException e) {
                    xLogger.error("FileThread:createNewFileEnviosOrdenesProceso:", e);
                }
                finally {
                    try {
                        if (fileWriter != null) {
                            fileWriter.close();
                        }
                    }
                    catch (IOException e) {
                        xLogger.error("FileThread:createNewFileEnviosOrdenesProceso:fileWriterClose:", e);
                    }
                }
                List listNumerosOrdenes = null;
                if (busquedaDto.getListNumerosOrdenes() == null) {
                    listNumerosOrdenes = new ArrayList();
                    listNumerosOrdenes.add(busquedaDto.getNumeroOrden() != null ? busquedaDto.getNumeroOrden() : "");
                }
                else {
                    listNumerosOrdenes = busquedaDto.getListNumerosOrdenes();
                }
                if (i > ConstantesGenerales.NUMERO_REGISTROS_ZIP) {
                    /**
                     * .zip
                     */
                    fileName = fileName.replace(".", "&&&").split("&&&")[0] + ConstantesGenerales.FILE_EXTENSION_ZIP;
                    File archiveFile = new File(ConstantesGenerales.FOLDER_CARGUE_ARCHIVOS + ConstantesGenerales.PATH_ARCHIVOS_ALERTAS + fileName);
                    CreateZipFile zipper = new CreateZipFile();
                    zipper.createZipArchive(archiveFile, file);
                    file.delete();
                    dao.insertMensajeAlerta(fileName, ldapUser, i, listNumerosOrdenes);
                }
                else {
                    /**
                     * .txt
                     */
                    dao.insertMensajeAlerta(fileName, ldapUser, i, listNumerosOrdenes);
                }
            }
            catch (DAOException e) {
                xLogger.error("FileThread:createNewFileEnviosOrdenesProceso:", e);
            }
            catch (QueryFactoryException e) {
                xLogger.error("FileThread:createNewFileEnviosOrdenesProceso:", e);
            }
            catch (SQLException e) {
                xLogger.error("FileThread:createNewFileEnviosOrdenesProceso:", e);
            }
            catch (Exception e) {
                xLogger.error("FileThread:createNewFileEnviosOrdenesProceso:", e);
            }
            finally {
                try {
                    closeConnection(con, statement, rs);
                }
                catch (DAOException e) {
                    xLogger.error("FileThread:createNewFileEnviosOrdenesProceso:closeConnection:", e);
                }
            }
        }
    }
    
    private void createNewFileBase() {
        if (listObjects != null && !listObjects.isEmpty()) {
            File file = null;
            FileWriter fileWriter = null;
            try {
                file = new File(ConstantesGenerales.FOLDER_CARGUE_ARCHIVOS + ConstantesGenerales.PATH_ARCHIVOS_ALERTAS + fileName);
                fileWriter = new FileWriter(file);
                fileWriter.write("FECHA_CORTE_PROCESO" + ConstantesGenerales.FILE_SEPARATOR + "CICLO" + ConstantesGenerales.FILE_SEPARATOR + "CODIGO_INTERNO_CLIENTE" + ConstantesGenerales.FILE_SEPARATOR +
                                 "NOMBRE_ABONADO" + ConstantesGenerales.FILE_SEPARATOR + "TELEFONO_ABONADO" + ConstantesGenerales.FILE_SEPARATOR + "DIRECCION_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR +
                                 "SITIO_ORIGINAL" + ConstantesGenerales.FILE_SEPARATOR + "CODIGO_BARRAS" + ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_TIPO_GESTION" + ConstantesGenerales.FILE_SEPARATOR +
                                 "NOMBRE_GESTION" + ConstantesGenerales.FILE_SEPARATOR + "FECHA_ULTIMA_GESTION" + ConstantesGenerales.FILE_SEPARATOR + "NUMERO_ORDEN_PROCESO");
                if (conInsertos) {
                    fileWriter.write(ConstantesGenerales.FILE_SEPARATOR + "INSERTOS");
                }
                if (conTipoDestinoCliente) {
                    fileWriter.write(ConstantesGenerales.FILE_SEPARATOR + "NOMBRE_TIPO_DESTINO_CLIENTE");
                }
                fileWriter.write("\r\n");
                Iterator iterator = listObjects.iterator();
                while (iterator.hasNext()) {
                    BaseDto baseDto = (BaseDto) iterator.next();
                    fileWriter.write(baseDto.getFechaCorteProcesoFormat() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getCiclo() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getCodigoInternoCliente() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getNombreAbonado() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getTelefonoAbonado() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getDireccionDestinatario() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getSitioOriginal() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getCodigoBarras() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getNombreTipoGestion() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getNombreGestion() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getFechaUltimaGestionFormat() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(baseDto.getNumeroOrden());
                    List listInsertos = baseDto.getListInsertos();
                    if (listInsertos != null && !listInsertos.isEmpty()) {
                        fileWriter.write(ConstantesGenerales.FILE_SEPARATOR);
                        Iterator iteratorInsertos = listInsertos.iterator();
                        int indice = 1;
                        while (iteratorInsertos.hasNext()) {
                            InsertoDto insertoDto = (InsertoDto) iteratorInsertos.next();
                            if (indice++ > 1) {
                                fileWriter.write(ConstantesGenerales.FILE_SEPARATOR_TO_HELP + insertoDto.getDescripcionInserto());
                            }
                            else {
                                fileWriter.write(insertoDto.getDescripcionInserto());
                            }
                        }
                    }
                    else if (conInsertos) {
                        fileWriter.write(ConstantesGenerales.FILE_SEPARATOR + "");
                    }
                    if (baseDto.getNombreTipoDestinoCliente() != null && !baseDto.getNombreTipoDestinoCliente().equals("")) {
                        fileWriter.write(ConstantesGenerales.FILE_SEPARATOR + baseDto.getNombreTipoDestinoCliente());
                    }
                    fileWriter.write("\r\n");
                }
                fileWriter.write("\r\nNRO. REGISTROS: " + listObjects.size() + "\r\n");
                fileWriter.write("FECHA GENERACION: " + ConstantesGenerales.SIMPLE_DATE_FORMAT.format(new Date()));
            }
            catch (IOException e) {
                xLogger.error("FileThread:createNewFileBase:", e);
            }
            finally {
                try {
                    if (fileWriter != null) {
                        fileWriter.close();
                    }
                }
                catch (IOException e) {
                    xLogger.error("FileThread:createNewFileBase:fileWriterClose:", e);
                }
            }
        }
    }
    
    private void createNewFileRad() {
        if (listObjects != null && !listObjects.isEmpty()) {
            File file = null;
            FileWriter fileWriter = null;
            try {
                file = new File(ConstantesGenerales.FOLDER_CARGUE_ARCHIVOS + ConstantesGenerales.PATH_ARCHIVOS_ALERTAS + fileName);
                fileWriter = new FileWriter(file);
                Iterator iterator = listObjects.iterator();
                while (iterator.hasNext()) {
                    EnvioDto envioDto = (EnvioDto) iterator.next();
                    String codigoBarras = envioDto.getCodigoBarras().length() < 16 ? "0" + envioDto.getCodigoBarras() : envioDto.getCodigoBarras();
                    fileWriter.write(codigoBarras + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getConsecutivo() != null ? envioDto.getConsecutivo() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getNumeroIdentificacion() != null ? envioDto.getNumeroIdentificacion() : "" )+ ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getCodigoInternoCliente() != null ? envioDto.getCodigoInternoCliente() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getNombreDestinatario() != null ? envioDto.getNombreDestinatario() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getTelefonoDestinatario() != null ? envioDto.getTelefonoDestinatario() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getDireccionDestinatario() != null ? envioDto.getDireccionDestinatario() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getNombreCentroPoblado() != null ? envioDto.getNombreCentroPoblado() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getNombreDepartamento() != null ? envioDto.getNombreDepartamento() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getZonaPostal() != null ? envioDto.getZonaPostal() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write((envioDto.getValorTotal() != null ? envioDto.getValorTotal() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// marca inserto
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// numero insertos
                    fileWriter.write((envioDto.getNumeroOrden() != null ? envioDto.getNumeroOrden() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// codigo barras envia
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// fecha maxima de entrega
                    fileWriter.write((envioDto.getDescripcionProducto() != null ? envioDto.getDescripcionProducto() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    if (envioDto.getCodigoDepartamento() != null && !envioDto.getCodigoDepartamento().equals("") && envioDto.getCodigoMunicipio() != null && !envioDto.getCodigoMunicipio().equals("") && envioDto.getCodigoCentroPoblado() != null && !envioDto.getCodigoCentroPoblado().equals("")) {
                        String codigoDane = "";
                        if (envioDto.getCodigoDepartamento().length() == 1) {
                            codigoDane = "0" + envioDto.getCodigoDepartamento();
                        }
                        else {
                            codigoDane = envioDto.getCodigoDepartamento();
                        }
                        if (envioDto.getCodigoMunicipio().length() == 1) {
                            codigoDane += "00" + envioDto.getCodigoMunicipio();
                        }
                        else if (envioDto.getCodigoMunicipio().length() == 2) {
                            codigoDane += "0" + envioDto.getCodigoMunicipio();
                        }
                        else {
                            codigoDane += envioDto.getCodigoMunicipio();
                        }
                        if (envioDto.getCodigoCentroPoblado().length() == 1) {
                            codigoDane += "00" + envioDto.getCodigoCentroPoblado();
                        }
                        else if (envioDto.getCodigoCentroPoblado().length() == 2) {
                            codigoDane += "0" + envioDto.getCodigoCentroPoblado();
                        }
                        else {
                            codigoDane += envioDto.getCodigoCentroPoblado();
                        }
                        fileWriter.write(codigoDane + ConstantesGenerales.FILE_SEPARATOR);
                    }
                    else {
                        fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// codigo dane
                    }
                    fileWriter.write((envioDto.getNumeroDocumento() != null ? envioDto.getNumeroDocumento() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// reserva
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// reserva
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// reserva
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// vip
                    fileWriter.write((envioDto.getSitioOriginal() != null ? envioDto.getSitioOriginal() : "") + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(ConstantesGenerales.CODIGO_GESTION_ENVIO_IMPRESION + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// reserva
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);// reserva
                    fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(envioDto.getNombreArchivo() + "\r\n");
                }
            }
            catch (IOException e) {
                xLogger.error("FileThread:createNewFileRad:", e);
            }
            finally {
                try {
                    if (fileWriter != null) {
                        fileWriter.close();
                    }
                }
                catch (IOException e) {
                    xLogger.error("FileThread:createNewFileRad:fileWriterClose:", e);
                }
            }
        }
    }
}